﻿function Personal() {
    this.Area = "";
    this.IdRol = "";



    this.PreInit = function () {

        var _parent = this;

        _parent.TituloModalForm = "Asignación de personal";
        _parent.CssModalForm = {
            'top': "40%",
            'width': '800px',
            'margin-left': function () {
                return -($(this).width() / 2);
            }
        }

        _parent._Editar();
        _parent._Eliminar();

        _parent._getCont().find("#nuevo").click(function () {
            _parent.Form();
        })
    }

    /**
    Editar el registro
    */
    this._Editar = function () {

        var _parent = this;

        _parent._getContList().off('.editar');
        _parent._getContList().on('click', '.editar', function (e) {
            e.preventDefault();
            var obj = $(this);


            _parent.Form(
                {
                    IdAsigPer: obj.attr('data-IdAsigPer')
                }
            )
        });
    };


    /**
    Eliminar el registro
    */
    this._Eliminar = function () {

        var _parent = this;

        _parent._getContList().off('.eliminar');
        _parent._getContList().on('click', '.eliminar', function (e) {
            e.preventDefault();
            var obj = $(this);

            var confirmacion = _parent._MensajeConfirmacion();
            confirmacion.titulo = "Personal";
            confirmacion.contenido = "¿Esta seguro de eliminar el registro?";


            confirmacion.yes = function () {
                jQuery.post(URL_PAGE + "Administrador/Personal/Eliminar",
                                         {
                                             IdAsigPer: obj.attr('data-IdAsigPer')
                                         },
                             function (data) {

                                 confirmacion.getModal.modal('hide');
                                 _parent._MensajesOperacion("success",
                                                    "Registro eliminado",
                                                    "El registro fue eliminado correctamente");
                                 _parent.List();
                             }
                   , "json");
            };

            confirmacion.modal();

        });
    };


    //Despues de cargar el formulario
    this._PostForm = function () {
        var _parent = this;
        _parent._InicializarVisualizacionControles();
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();
    }

    this._InicializarVisualizacionControles = function () {

        var _parent = this;
        var form = _parent._getForm();

        //Seteando valores
        form.find("#Area").val(_parent.Area);
        form.find("#IdRol").val(_parent.IdRol);

        //Para el usuario y la promocion
        form.find("#buscar-personal").show();
        form.find("#buscar-personal ._Busqueda").show();
        form.find("#buscar-personal ._Resultado").hide();

        form.find("#buscar-promocion").show();
        form.find("#buscar-promocion ._Busqueda").show();
        form.find("#buscar-promocion ._Resultado").hide();

        if (form.find("#Id").val() != "" && form.find("#Id").val() != "0") {
            form.find("#buscar-personal ._Busqueda").hide();
            form.find("#buscar-personal ._Resultado").show();

            form.find("#buscar-promocion ._Busqueda").hide();
            form.find("#buscar-promocion ._Resultado").show();

        }
    }

    this.ValidacionCamposForm = function () {

        var _parent = this;
        var form = _parent._getForm();
        form.find("#BusquedaUsuario").addClass("validate[required]");
        form.find("#BusquedaPromocion").addClass("validate[required]");
    }
    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;
        var form = _parent._getForm();

        _parent._getContForm().find("#aceptar").click(function () {
            form.submit();
        })

        form.validationEngine({
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {

                if (status) {
                    form.ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {

                            _parent._MensajesOperacion("success", "Registro grabado", "La asignación del personal fue grabado correctamente");
                            _parent.List();
                            _parent._getContForm().modal('hide');
                        }
                    });
                }
            }
        });


        //Auto complete para el usuario
        var autoCompleteUsuario = new _parent._AutoComplete();
        autoCompleteUsuario.container = form.find("#buscar-personal");
        autoCompleteUsuario.input = form.find("#BusquedaUsuario");
        autoCompleteUsuario.UrlBusqueda = URL_PAGE + "Shared/Catalogo/BuscarUsuario";

        autoCompleteUsuario.Data = function () {
            return { cadena: autoCompleteUsuario.input.val() };
        };

        autoCompleteUsuario.CargarItems = function (item) {
            //console.log(item);
            var autocompleteTemp = autoCompleteUsuario.container.find("._Autocomplete");
            console.log(autocompleteTemp.html());

            autocompleteTemp.find("#_nombrecompleto").html(item.FirstName + " " + item.LastName);
            autocompleteTemp.find("#_usuario").html(item.LoginName);
            autocompleteTemp.find("#_email").html(item.EmailAddress);
            autocompleteTemp.find("#_anexo").html(item.Anexo);

            return autocompleteTemp.html();
        };

        autoCompleteUsuario.MostrarItemSeleccionado = function (ui) {
            //Ocultar el campo de texto para la busqueda
            var busquedaForm = autoCompleteUsuario.container.find("._Busqueda");
            busquedaForm.slideUp();

            var obj = autoCompleteUsuario.container.find("._Resultado");
            var item = ui.item;

            //obj.find("#Empr_Codigo").val(item.Id);
            obj.find("#lbl-nombrecompleto").html(item.FirstName + " " + item.LastName);
            obj.find("#lbl-usuario").html(item.LoginName);
            obj.find("#lbl-email").html(item.EmailAddress);
            obj.find("#lbl-anexo").html(item.Anexo);

            obj.find("#NombreCompleto").val(item.FirstName + " " + item.LastName);
            obj.find("#Usuario").val(item.LoginName);
            obj.find("#Email").val(item.EmailAddress);
            obj.find("#Anexo").val(item.Anexo);
            obj.slideDown();
        };
        autoCompleteUsuario.AutoCompletar();

        ////////////////////////////////////////////////////////////////////////////
        //Auto complete para el producto
        var autoCompleteProducto = _parent._AutoComplete();
        autoCompleteProducto.container = form.find("#buscar-producto");
        autoCompleteProducto.input = form.find("#BusquedaProducto");
        autoCompleteProducto.UrlBusqueda = URL_PAGE + "Shared/Catalogo/BuscarProducto";

        autoCompleteProducto.Data = function () {
            return { cadena: autoCompleteProducto.input.val() };
        };

        autoCompleteProducto.CargarItems = function (item) {
            //console.log(item);            
            var autocompleteTemp = autoCompleteProducto.container.find("._Autocomplete");

            autocompleteTemp.find("#_nombreproducto").html(item.NombreProducto);
            autocompleteTemp.find("#_codigo").html(item.Prod_Codigo);

            return autocompleteTemp.html();
        };

        autoCompleteProducto.MostrarItemSeleccionado = function (ui) {
            //Ocultar el campo de texto para la busqueda
            var busquedaForm = autoCompleteProducto.container.find("._Busqueda");
            busquedaForm.slideUp();

            var obj = autoCompleteProducto.container.find("._Resultado");
            var item = ui.item;

            //obj.find("#Empr_Codigo").val(item.Id);
            obj.find("#lbl-nombreproducto").html(item.NombreProducto);
            obj.find("#lbl-codigo").html(item.Prod_Codigo);

            obj.find("#NombreProducto").val(item.NombreProducto);
            obj.find("#Prod_Codigo").val(item.Prod_Codigo);
            obj.slideDown();
        };

        autoCompleteProducto.AutoCompletar();
        //console.log(autoCompleteUsuario);
    }
}

$(document).ready(function () {

    _PAGE = function () {
        this.Personal = "";
    };

    //Para la informacion academica
    Personal.prototype = new Mantenimiento();
    _PAGE.Personal = new Personal();

    //Inicializando
    var _Urls = Urls;
    _Urls.Register = URL_PAGE + "Administrador/Personal/Registrar";
    _Urls.Form = URL_PAGE + "Administrador/Personal/Form";
    _Urls.List = URL_PAGE + "Administrador/Personal/List"

    _PAGE.Personal.Init($("#_Personal"), _Urls, "Modal");
    _PAGE.Personal.Area = $("#_Personal").find("#_ParametroHidden").find("#Area").val();
    _PAGE.Personal.IdRol = $("#_Personal").find("#_ParametroHidden").find("#IdRol").val();

    //Cargando la lista de informacion académica
    _PAGE.Personal.List({ area: _PAGE.Personal.Area });

});